import axios from 'axios'
import { QueryParams, PaginationData } from '@/types'
import { Role, Permission } from '@/types/role'

// 角色API基础路径
const API_BASE = '/api/system/roles'

/**
 * 获取角色列表
 * @param params 查询参数
 * @returns 分页角色数据
 */
export const getRoleList = (params: QueryParams) => {
  return axios.get<PaginationData<Role>>(API_BASE, { params })
}

/**
 * 获取角色详情
 * @param id 角色ID
 * @returns 角色详情
 */
export const getRole = (id: number) => {
  return axios.get<Role>(`${API_BASE}/${id}`)
}

/**
 * 创建角色
 * @param data 角色数据
 * @returns 创建结果
 */
export const createRole = (data: Omit<Role, 'id' | 'createTime' | 'updateTime'>) => {
  return axios.post<Role>(API_BASE, data)
}

/**
 * 更新角色
 * @param id 角色ID
 * @param data 角色数据
 * @returns 更新结果
 */
export const updateRole = (id: number, data: Partial<Role>) => {
  return axios.put<Role>(`${API_BASE}/${id}`, data)
}

/**
 * 删除角色
 * @param id 角色ID
 * @returns 删除结果
 */
export const deleteRole = (id: number) => {
  return axios.delete<Role>(`${API_BASE}/${id}`)
}

/**
 * 更新角色状态
 * @param id 角色ID
 * @param status 状态值
 * @returns 更新结果
 */
export const updateRoleStatus = (id: number, status: string) => {
  return axios.patch<Role>(`${API_BASE}/${id}/status`, { status })
}

/**
 * 获取角色权限
 * @param id 角色ID
 * @returns 权限ID列表
 */
export const getRolePermissions = (id: number) => {
  return axios.get<number[]>(`${API_BASE}/${id}/permissions`)
}

/**
 * 更新角色权限
 * @param id 角色ID
 * @param permissionIds 权限ID列表
 * @returns 更新结果
 */
export const updateRolePermissions = (id: number, permissionIds: number[]) => {
  return axios.put<number[]>(`${API_BASE}/${id}/permissions`, { permissionIds })
}

/**
 * 获取所有权限树
 * @returns 权限树数据
 */
export const getPermissionTree = () => {
  return axios.get<Permission[]>('/api/system/permissions/tree')
} 